﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using DAL;
using BLL;
using BOL;
using DevComponents.DotNetBar;
using DevComponents.AdvTree;

namespace QuanLyHangXeKhach
{
    public partial class frmCapNhatTaiKhoan : UserControl
    {
        CapTaiKhoan captk = new CapTaiKhoan();
        DieuKhien dk = new DieuKhien();

        public frmCapNhatTaiKhoan()
        {
            InitializeComponent();
        }

        private void frmCapNhatTaiKhoan_Load(object sender, EventArgs e)
        {
            check(false);
            cobchucvu.Items.Add("Quản lý");
            cobchucvu.Items.Add("Nhân viên");

            loadfrm();


        }
        #region Điều khiển đóng/mở form
        private DieuKhien _Commands;
        /// <summary>
        /// Gets or sets the commands associated with the control.
        /// </summary>
        public DieuKhien Commands
        {
            get { return _Commands; }
            set
            {
                if (value != _Commands)
                {
                    DieuKhien oldValue = _Commands;
                    _Commands = value;
                    OnCommandsChanged(oldValue, value);
                }
            }
        }
        /// <summary>
        /// Called when Commands property has changed.
        /// </summary>
        /// <param name="oldValue">Old property value</param>
        /// <param name="newValue">New property value</param>
        protected virtual void OnCommandsChanged(DieuKhien oldValue, DieuKhien newValue)
        {
            if (newValue != null)
            {
                btndong.Command = newValue.dongfrmcaptk;

            }
            else
            {
                btndong.Command = null;
            }
        }

        #endregion

        public void loadfrm()
        {
            if (rddacotk.Checked)
            {
                List<taikhoannv> tk = captk.nvcotk();
                advTree1.Nodes.Clear();
                foreach (var row in tk)
                {
                    advTree1.Nodes.Add(CreatenoidenRow(row.manv, row.tennv, row.taikhoan, row.chucvu));
                }
            }
            else
            {
                List<nvchuacotk> tk = captk.nvchuacotk();
                advTree1.Nodes.Clear();
                foreach (var row in tk)
                {
                    advTree1.Nodes.Add(CreatenoidenRow(row.manv, row.tennv, "", ""));
                }
            }
        }

        
        private Node CreatenoidenRow(string ma, string ten,string taikhoan, string chucvu)
        {
            Node node = new Node(ma);
            node.Cells.Add(new Cell(ten));
            node.Cells.Add(new Cell(taikhoan));
            node.Cells.Add(new Cell(chucvu));
            return node;
        }

        public void check(bool a)
        {
            txtmanv.Enabled = a;
            txtmatkhau.Enabled = a;
            txttaikhoan.Enabled = a;
        }

        public void xoatrang()
        {
            txtmanv.Text = "";
            txtmatkhau.Text = "";
            txttaikhoan.Text = "";
            cobchucvu.Text = "";
        }
        private void rdchuacotk_CheckedChanged(object sender, EventArgs e)
        {
            loadfrm();
            xoatrang();
            if (rdchuacotk.Checked)
            {
                chtaotudong.Enabled = true;
                btnin.Enabled = false;
                btntaotaikhoan.Enabled = true;
                btnsua.Enabled = false;
                btnxoa.Enabled = false;
            }
            else
            {
                chtaotudong.Enabled = false;
                btnin.Enabled = true;
                btntaotaikhoan.Enabled = false;
                btnsua.Enabled = true;
                btnxoa.Enabled = true;
                chtaotudong.Checked = false;
            }
        }

        private void chtaotudong_CheckedChanged(object sender, EventArgs e)
        {
            if (chtaotudong.Checked)
                cobchucvu.Enabled = false;
            else cobchucvu.Enabled = true;
        }

        private void btnin_Click(object sender, EventArgs e)
        {
            if (txttaikhoan.Text == "")
                MessageBoxEx.Show("Chọn nhân viên muốn in thông tin", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
            else
            {
                frmrpttaikhoan frm = new frmrpttaikhoan();
                frm.taikhoan = txttaikhoan.Text.Trim();
                frm.ShowDialog();
            }
        }

        private void advTree1_AfterNodeSelect(object sender, AdvTreeNodeEventArgs e)
        {
            if (rddacotk.Checked)
            {
                try
                {
                    Node node = e.Node;
                    txtmanv.Text = node.Cells[0].Text;
                    txttaikhoan.Text = node.Cells[2].Text;
                    cobchucvu.Text = node.Cells[3].Text;
                    txtmatkhau.Text = "*************";
                }
                catch (Exception) { }
            }
            else
            {               
                try
                {
                    Node node = e.Node;
                    txtmanv.Text = node.Cells[0].Text;
                    txttaikhoan.Text = captk.checktaikhoan(dk.taotendangnhap(dk.locDau(node.Cells[1].Text.ToLower())));
                    txtmatkhau.Text = dk.GenerateRandomPassword(6);
                    cobchucvu.Text = "Nhân viên";
                }
                catch (Exception) { }
            }
        }

        private void btnsua_Click(object sender, EventArgs e)
        {
            if (txttaikhoan.Text == "" || cobchucvu.Text == "")
                MessageBoxEx.Show("Chọn một nhân viên muốn sửa và chức vụ cần sửa", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
            else {
                captk.suachucvu(txttaikhoan.Text, cobchucvu.Text);
                MessageBoxEx.Show("Sửa chức vụ thành công", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                loadfrm();
                xoatrang();
            }
        }

        private void btnxoa_Click(object sender, EventArgs e)
        {
            if (txttaikhoan.Text == "" )
                MessageBoxEx.Show("Chọn một nhân viên muốn xóa", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
            else
            {
                DialogResult dr = MessageBoxEx.Show("Bạn muốn xóa tài khoản "+txttaikhoan.Text.Trim()+" của nhân viên "+txtmanv.Text+" này ?", "Thông báo", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
                if (dr == DialogResult.Yes)
                {
                    captk.xoatk(txttaikhoan.Text);
                    MessageBoxEx.Show("xóa tài khoản thành công", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    loadfrm();
                    xoatrang();
                }
            }
        }

        private void btntaotaikhoan_Click(object sender, EventArgs e)
        {
            if (chtaotudong.Checked)
            {
                int i;
                for (i = 0; i < advTree1.Nodes.Count; i++)
                {
                    captk.themtk(advTree1.Nodes[i].Cells[0].Text, captk.checktaikhoan(dk.taotendangnhap(dk.locDau(advTree1.Nodes[i].Cells[1].Text.ToLower()))), dk.GenerateRandomPassword(6), "Nhân viên");
                }
                MessageBoxEx.Show("Thêm "+i+" tài khoản thành công", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                loadfrm();
                xoatrang();
            }
            else
            {
                if (txtmanv.Text == "" || cobchucvu.Text == "")
                {
                    MessageBoxEx.Show("Chọn một nhân viên muốn thêm tài khoản", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
                else
                {
                    captk.themtk(txtmanv.Text, txttaikhoan.Text.Trim(), txtmatkhau.Text, cobchucvu.Text);
                    MessageBoxEx.Show("Thêm tài khoản thành công", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    loadfrm();
                    xoatrang();
                }
            }
        }
    }
}
